Measuring Digital Marketing Performance

GA4 + GTM + GSC • UTMs • Key Events

Jarrod Griffin

College of Business Administration - Cal Poly Pomona

2/10/2026

Greetings and Introductions

  • Jae Jung, Ph.D., Professor of Marketing, Director of CCIDM
  • Jarrod Griffin, Master’s Student - Digital Marketing, Graduate Fellow, CCIDM

Introduction & Orientation

  • The Objective: Moving from marketing theory to Marketing Operations.
  • The Career Impact: Why this technical skillset matters for your future role.
  • The Goal: Gaining the ability to not just plan campaigns, but measure and optimize them.

Agenda

  • Introduction & Orientation (5 min)
  • Conceptual Framework (10 Min): The Data Ecosystem (GA4, GTM, GSC)
  • Technical Implementation (25 Min): Setting up the environment
  • Search Visibility (15 Min): Google Search Console integration
  • Campaign Tracking (15 Min): Mastering UTM parameters
  • Performance Measurement (10 Min): Defining and tracking Key Events

Learning Outcomes:

After taking this workshop, participants should be able to:

  1. Explain how Google Analytics 4 (GA4), Google Tag Manager (GTM), and Google Search Console (GSC) work together to measure and improve digital marketing performance.
  2. Configure Google Analytics 4 (GA4) for a website using Google Tag Manager (GTM) to ensure reliable baseline tracking.
  3. Validate and troubleshoot GA4 event tracking using GTM Preview/Debug tools to confirm accurate event collection.
  1. Configure Google Search Console (GSC) and connect to GA4 to incorporate organic search query and landing-page performance data.
  2. Build standardized UTM parameters to track marketing campaigns consistently across channels and avoid attribution errors.
  3. Set up and interpret GA4 Key Events to measure marketing outcomes.

Workshop Prep

Note

Optional to Follow Along; Required to Deploy

No-Install Method (Posit Cloud)

  1. Create Account: Log in to posit.cloud (Free Tier).
  2. Import Template:
    • Click New Project > New Project from Git Repository.
    • Paste this URL: https://github.com/CCIDM/portfolio-website-template.git
  3. Edit: Open index.qmd to customize your content.
  4. Publish:
    • Go to Terminal tab, enter quarto publish netlify. You will be prompted to login to netlify. Create account or login.

Trinity of Google Data Collection (10 Min)

Google Tag Manager

“The Brain/Eyes”

Tag management system that lets you configure, deploy, and troubleshoot tracking tags from a web interface—no code changes needed. (Facebook, EventBrite, etc.)

Google Analytics 4

“The Database”

Next-gen analytics collecting event-based data from websites/apps to understand full customer journeys with privacy controls and predictive insights.

Google Search Console

“The Search Health Check”

Webmaster tool to monitor indexing, search performance, crawl errors, and optimize site visibility in Google Search results.

How they Connect

Diagram showing data flow between GTM, GA4, and GSC.

  • Install GTM on the site (not GA4 code directly)
  • GTM sends events to GA4
  • Link GSC to GA4 for organic query + landing-page reporting

Technical Implementation - GTM/GA4 (25 Min)

Goal

Connect our Quarto site to the Google Marketing Platform (GA4 + GTM).

Assumptions

To follow along, you need:

  1. A Published Website: Your site is live (e.g., Netlify, GitHub Pages).
  2. Admin Access: You have the ability to edit the source code or CMS settings.

Why this matters

We are moving from “static pages” to “measurable data” by injecting tracking codes into your live environment.

The Account Setup

Before we touch the code/website, we need the containers.

  1. Create GTM Account: Get your container ID (GTM-XXXXXX).
  2. Install GTM Code: Place the snippets on your website (<head> and <body>).
  3. Create GA4 Property: Get your Measurement ID (G-XXXXXXXX).
  4. Connect in GTM: Create a “Google Tag” inside GTM and paste your GA4 ID.
  5. Publish: Push the changes in GTM to make GA4 live.

Create GTM Container

The Setup

  1. Log in: tagmanager.google.com.
  2. Create Account: Enter Company Name.
  3. Create Container: Enter Domain (e.g., mysite.com).
  4. Select Platform: Choose Web.
  5. Install: Get the <head> and <body> scripts.

Why GTM?

  • The Box Metaphor: GTM is the empty box; GA4 is just one tool you put inside it.
  • Efficiency: You install the GTM code once. Future changes (Facebook Pixel, LinkedIn Insight, GA4 Events) happen inside GTM, not your site code.

Create GA4 Property

The Setup

  1. Go to Analytics > Admin.
  2. Click Create Account.
  3. Follow the wizard to create your Property.
  4. Save: Copy the Measurement ID (G-XXXXXXXX) for your website code.

Best Practices

  • One Property Rule: Most businesses only need 1 Property.
  • Cross-Device: Combine your Website and App data in the same property for better user tracking.
  • When to split? Only use multiple properties for different Regions (Timezones/Currencies) or Marketing Teams.

:::

Connect GA4 to GTM

The Connection

  1. New Tag: Select Google Tag.
  2. ID: Paste G-XXXXXXXX.
  3. Trigger: Choose Initialization - All Pages.
  4. Save: Name it “GA4 Config”.

The Launch

  1. Submit: Click the blue button in the top right.
  2. Version: Give it a name (e.g., “Initial GA4 Launch”).
  3. Publish: This pushes your changes to the live website.

Note: Until you hit Publish, your changes are only saved in a “Draft” version.

Validation

  1. Open DebugView:
    • Go to GA4 Admin > Data Display > DebugView.
  2. Trigger Data:
    • Open your website in a new tab (or use GTM Preview Mode).
    • Click around to generate events.
  3. Verify:
    • Look for the blue icons appearing on the timeline.
    • Confirm the page_view event is listed.

Expected Outcome

If you see events populating the timeline in real-time, your connection is successful. If the timeline is empty, check if your ad blocker is on!

Search Visibility with GSC

  • Configure Google Search Console on the website
  • Connect GSC to GA4
  • In GA4: Reports → Library → Publish “Search Console”

GSC configuration methods

Domain Property

  • Verify via DNS settings at domain provider

URL Prefix Property

  • HTML file upload (developer access)
  • HTML tag (WordPress/CMS users)
  • GA4/GTM (best if GA4 or GTM already exists)

Campaign Tracking with UTMs

  • UTMs add campaign intent to traffic attribution
  • Standardization prevents reporting from fragmenting
Visual placeholder: Google Campaign URL Builder screenshot

Standardization protocols

  • Be consistent across teams and channels
  • UTM is case sensitive
    Facebook != facebook
  • Decide naming rules before campaigns launch

Interactive exercise: build a UTM

Scenario: “Create a link for a LinkedIn post promoting the Spring Workshop.”

utm_source=linkedin
utm_medium=social
utm_campaign=spring_workshop_2026

Key Events: measuring outcomes

  • GA4 Event: something happened (page visit, scrolling)
  • GA4 Key Event: something important happened (purchase, signup, etc.)
  • “Conversion” = a Key Event you share with Google Ads for bidding

Key Event implementation (via GTM)

Step 1: Create the Trigger (GTM)

Trigger: Thank You Page
Type: Page View
Fire On: Some Page Views
Condition: Page Path contains "thank-you" (or "contact")

Key Event implementation (via GTM)

Step 2: Create the Tag (GTM)

Tag: Google Analytics: GA4 Event
Measurement ID: (use the variable from the Google Tag)
Event Name: generate_lead
Trigger: Thank You Page

Publish & test

  • Publish the GTM container
  • Visit the Thank You page
  • Confirm in GA4 DebugView that generate_lead fired

The handshake in GA4

  • GA4 Admin → Data Display → Events
  • It may take 24 hours for new events to appear automatically
  • Immediate fix: Create Key Event manually
    Name: generate_lead (exact match)

Wrap-up

  • You now have:
    • Baseline GTMGA4 tracking
    • A validation workflow (Preview/Debug + DebugView)
    • GSC linkage path for search reporting
    • Standardized UTMs and a Key Event pattern